package datatypes;

public class ADTBruch extends ADTWert
{
	private double zaehler;
	private double nenner;
	
	public ADTBruch() 
	{
	}
	
	public ADTBruch(int zaehler, int nenner) 
	{
		super();
		this.zaehler = zaehler;
		this.nenner = nenner;
		this.variable = null;
		this.hochwert = null;
	}
	
	public ADTBruch(int zaehler, int nenner, ADTWert hochwert) 
	{
		super();
		this.zaehler = zaehler;
		this.nenner = nenner;
		this.variable = null;
		this.hochwert = hochwert;
	}
	
	public ADTBruch(int zaehler, int nenner, ADTWert variable, ADTWert hochwert) 
	{
		super();
		this.zaehler = zaehler;
		this.nenner = nenner;
		this.variable = variable;
		this.hochwert = hochwert;
	}
	
	public double getErgebnis()
	{
		if(hochwert == null && variable == null)
		{
			return zaehler/nenner;				
		}
		else if(hochwert == null)
		{
			return (zaehler / nenner) * variable.getErgebnis();
		}
		else if(variable == null)
		{
			return Math.pow((zaehler/nenner), hochwert.getErgebnis());
		}
		else
		{
			return (zaehler/nenner) * Math.pow(variable.getErgebnis(), hochwert.getErgebnis());
		}
	}
	
	public double getHochwert()
	{
		return (zaehler/nenner);
	}

	
	public double getZaehler()
	{
		return zaehler;
	}
	
	public void setZaehler(int zaehler)
	{
		this.zaehler = zaehler;
	}
	
	public double getNenner()
	{
		return nenner;
	}
	
	public void setNenner(int nenner)
	{
		this.nenner = nenner;
	}
}
